<?php declare(strict_types=1);

namespace think\msg\platform;

use think\msg\MsgContext;
use think\msg\MsgException;

class MsgPlatformFactory
{
    /**
     * 创建推送平台适配器
     * @param array $platformConfig 平台配置参数
     * @return MsgPlatform 推送平台适配器
     * @throws MsgException
     */
    public static function create(MsgContext $context, array $platformConfig): MsgPlatform
    {
        $handler = $platformConfig['handler'] ?? '';
        if (empty($platformConfig['handler'])) {
            throw new MsgException('推送平台配置错误，缺失handler属性');
        } elseif (!class_exists($handler)) {
            throw new MsgException('推送平台配置错误，handler属性值不存在');
        }
        return new $handler($context, $platformConfig);
    }
}